package com.wanji.gateway.command;

import com.wanji.gateway.constant.CommandPriority;
import com.wanji.gateway.constant.CommandType;

import java.util.Map;

/**
 * 指令工厂类
 * 负责创建不同类型的设备指令
 */
public class CommandFactory {

    /**
     * 根据指令类型创建指令
     *
     * @param commandType 指令类型（如：READ_DATA, SET_PARAM）
     * @param params      指令参数
     * @return 设备指令对象
     */
    public static DeviceCommand create(CommandType commandType, Map<String, Object> params) {
        BaseDeviceCommand command = new BaseDeviceCommand(commandType);

        // 设置参数
        if (params != null) {
            params.forEach(command::addParam);
        }

        // 设置默认优先级（可根据指令类型调整）
        CommandPriority priority = CommandPriority.LOW;
        command.setPriority(priority);

        return command;
    }
}
